package com.wanlian.service;

import com.wanlian.common.PageCondition;
import com.wanlian.entity.NoticeMsg;
import com.wanlian.entity.User;
import com.wanlian.model.ResultModel;
import com.wanlian.vo.Page;

import java.util.List;
import java.util.Map;

public interface NoticeMsgServices {

    /**
     * 删除消息
     *
     * @param msg
     * @return
     */
    ResultModel doDeleteMsg(NoticeMsg msg);

    /**
     * 修改消息
     *
     * @param msg
     * @return
     */
    ResultModel doUpdateMsg(NoticeMsg msg);

    ResultModel queryNoticeMsgById(int id);

    /**
     * 分页查询消息展示
     *
     * @param pageCondition
     * @return
     */
    ResultModel queryNoticeMsgs(PageCondition pageCondition);

    /**
     * 单发消息
     *
     * @param noticeMsg
     * @return
     */
    ResultModel doSendMsgForOne(NoticeMsg noticeMsg);

    /**
     * 群发消息
     *
     * @param noticeMsg
     * @return
     */
    ResultModel doSendMsgForMany(NoticeMsg noticeMsg);

    /**
     * 查询用户的未查看信息条数
     *
     * @param userid
     * @return
     */
    ResultModel queryCountByUserId(int userid);

    /**
     * 根据userId查询该用户的所有信息（非系统公告）
     *
     * @param userId
     * @param page
     * @return
     */
    ResultModel queryMsgByUserId(int userId, Page page);

    /**
     * 发送系统公告
     *
     * @param noticeMsg
     * @return
     */
    ResultModel doSendSystemmsg(NoticeMsg noticeMsg);

    /**
     * 修改信息已查看状态
     *
     * @param noticeId
     * @return
     */
    ResultModel doUpdateHasLook(int noticeId);

    /**
     * 根据userId查询该用户的所有系统公告
     *
     * @param userId
     * @return
     */
    ResultModel querySystem(int userId, Page page);

    /**
     * 查询用户未查看的公告条数
     *
     * @param userId
     * @return
     */
    ResultModel queryCountSystem(int userId);

    /**
     * 查看所有系统公告
     *
     * @param pageCondition
     * @return
     */
    ResultModel queryAllSystem(PageCondition pageCondition);

    /**
     * 通过用户ID查询所有消息
     * 用于标记全部已读
     *
     * @param userId
     * @return
     */
    List<NoticeMsg> queryAllByUserId(int userId);

    NoticeMsg queryNewSystemByUserId(int userId);
}
